from PIL import Image

im = Image.open('src.png')

# im.show()

# 暂时只支持两块屏幕
size = [
    # width, height
    [2560, 1600],
    [1366, 768]
]

# 生成目标屏幕尺寸
size_dist = [0, 0]
size_dist[0] = size[0][0] + size[1][0]
size_dist[1] = max(size[0][1], size[1][1])

# 生成图像的目标尺寸
size_dist_image = [0, 0]
size_dist_image[1] = max(size[0][1], size[1][1])
if size[0][0] > size[1][0]:
    pass
else:
    pass


print('源尺寸:', size[0], size[1])
print('目标屏幕尺寸:', size_dist)
print('目标图像尺寸:', size_dist)
print('图片尺寸: [' + str(im.size[0]) + ', ' + str(im.size[1]) + ']')

# 需要屏幕顶部对齐排列
# 口□

# 先对原始图像做适应比例处理
scale = size_dist[0] / size_dist[1]

if im.size[0] > im.size[1] * scale:
    # 图片长了
    print('图片长了')
    dist_x = int(im.size[1] * scale)
    print('源长度', im.size[0], '目标长度', dist_x)
    im = im.crop([(im.size[0] - dist_x) // 2, 0, (im.size[0] - dist_x) // 2 + dist_x, im.size[1]])
else:
    # 图片高了
    print('图片高了')
    dist_y = int(im.size[0] / scale)
    print('源高度', im.size[1], '目标高度', dist_y)
    im = im.crop([0, (im.size[1] - dist_y) // 2, im.size[0], (im.size[1] - dist_y) // 2 + dist_y])

print('图片变换之后的尺寸', [im.size[0], im.size[1]])
print('现在比例', im.size[0] / im.size[1], '目标比例', scale)

# 然后缩放到目标尺寸
im = im.resize(size_dist)

# im.show()

# 按照屏幕高度相等来计算两边屏幕所使用的壁纸长度的比例
scale_screen = size[0][0] / (size[1][0] * (size[0][1] / size[1][1]))
print('两边屏幕所使用的壁纸长度的比例', scale_screen)

dist = im.copy()
print('dist图像大小', dist.size)
black = Image.new('RGB', [min(size[0][0], size[1][0]), size_dist[1]], 'black')

# 缩小屏幕较小的一边
if size[0][1] > size[1][1]:
    # 右边小，操作右边
    right = im.crop([int(im.size[0] * scale_screen), 0, im.size[0], im.size[1]])
    print('right resize之后', right.size)
    right = right.resize(size[1])
    # 贴上black
    print('black粘贴到', [size[0][0], 0, size_dist[0], size_dist[1]])
    dist.paste(black, [size[0][0], 0, size_dist[0], size_dist[1]])
    # 贴上右边
    dist.paste(right, [size[0][0], 0, size_dist[0], size[1][1]])

# dist.show()

# dist.save('dist.png')